home *** CD-ROM | disk | FTP | other *** search
/ PD Collection CD 1 / PD Collection CD 1.iso / textual / tex / files / !tex / TeXsource / commontex / h / eq < prev    next >
Encoding:
Text File  |  1988-04-08  |  11.3 KB  |  307 lines

  1. /*
  2.  *    Copyright 1986, 1987 Pat Joseph Monardo. All rights reserved.
  3.  *    Copying of this file is granted according to the provisions 
  4.  *    specified in the file COPYING which must accompany this file.
  5.  */
  6.  
  7.  
  8. /*
  9.  *        eq.h
  10.  */
  11.  
  12. #define    eq_level_field(EQ)        EQ.hh.hh2.b1
  13. #define    eq_type_field(EQ)        EQ.hh.hh2.b0
  14. #define    equiv_field(EQ)            EQ.hh.hh2.rh
  15. #define    eq_level(EQ)            eq_level_field(eqtb[EQ])
  16. #define    eq_type(EQ)                eq_type_field(eqtb[EQ])
  17. #define    equiv(EQ)                equiv_field(eqtb[EQ])
  18.  
  19. #define    LEVEL_ZERO                MIN_QUARTERWORD
  20. #define    LEVEL_ONE                (LEVEL_ZERO + 1)
  21.  
  22. #define    ACTIVE_BASE                1
  23. #define    SINGLE_BASE                 (ACTIVE_BASE + 128)
  24. #define    NULL_CS                    (SINGLE_BASE + 128)
  25. #define    HASH_BASE                (NULL_CS + 1)
  26. #define    FROZEN_CONTROL_SEQUENCE    (HASH_BASE + HASH_SIZE)
  27. #define    FROZEN_PROTECTION        (FROZEN_CONTROL_SEQUENCE)
  28. #define    FROZEN_CR                (FROZEN_CONTROL_SEQUENCE + 1)
  29. #define    FROZEN_END_GROUP        (FROZEN_CONTROL_SEQUENCE + 2)
  30. #define    FROZEN_RIGHT            (FROZEN_CONTROL_SEQUENCE + 3)
  31. #define    FROZEN_FI                (FROZEN_CONTROL_SEQUENCE + 4)
  32. #define    FROZEN_END_TEMPLATE        (FROZEN_CONTROL_SEQUENCE + 5)
  33. #define    FROZEN_ENDV                (FROZEN_CONTROL_SEQUENCE + 6)
  34. #define    FROZEN_RELAX            (FROZEN_CONTROL_SEQUENCE + 7)
  35. #define    END_WRITE                (FROZEN_CONTROL_SEQUENCE + 8)
  36. #define    FROZEN_DONT_EXPAND        (FROZEN_CONTROL_SEQUENCE + 9)
  37. #define    FROZEN_NULL_FONT        (FROZEN_CONTROL_SEQUENCE + 10)
  38. #define    FONT_ID_BASE            (FROZEN_NULL_FONT - FONT_BASE)
  39.  
  40. #define    UNDEFINED_CONTROL_SEQUENCE    (FROZEN_NULL_FONT + 257)
  41.  
  42. #define    GLUE_BASE                (UNDEFINED_CONTROL_SEQUENCE + 1)
  43. #define    GLUE_PARS                18
  44. #define    glue_par(G)                equiv(GLUE_BASE + G)
  45.  
  46. #define    LINE_SKIP_CODE                    0
  47. #define    BASELINE_SKIP_CODE                1
  48. #define    PAR_SKIP_CODE                    2
  49. #define    ABOVE_DISPLAY_SKIP_CODE            3
  50. #define    BELOW_DISPLAY_SKIP_CODE            4
  51. #define    ABOVE_DISPLAY_SHORT_SKIP_CODE    5
  52. #define    BELOW_DISPLAY_SHORT_SKIP_CODE    6
  53. #define    LEFT_SKIP_CODE                    7
  54. #define    RIGHT_SKIP_CODE                    8
  55. #define    TOP_SKIP_CODE                    9
  56. #define    SPLIT_TOP_SKIP_CODE                10
  57. #define    TAB_SKIP_CODE                    11
  58. #define    SPACE_SKIP_CODE                    12
  59. #define    XSPACE_SKIP_CODE                13
  60. #define    PAR_FILL_SKIP_CODE                14
  61. #define    THIN_MU_SKIP_CODE                15
  62. #define    MED_MU_SKIP_CODE                16
  63. #define    THICK_MU_SKIP_CODE                17
  64.  
  65. #define    line_skip                    glue_par(LINE_SKIP_CODE)
  66. #define    baseline_skip                glue_par(BASELINE_SKIP_CODE)
  67. #define    par_skip                    glue_par(PAR_SKIP_CODE)
  68. #define    above_display_skip            glue_par(ABOVE_DISPLAY_SKIP_CODE)
  69. #define    below_display_skip            glue_par(BELOW_DISPLAY_SKIP_CODE)
  70. #define    above_display_short_skip    glue_par(ABOVE_DISPLAY_SHORT_SKIP_CODE)
  71. #define    below_display_short_skip    glue_par(BELOW_DISPLAY_SHORT_SKIP_CODE)
  72. #define    left_skip                    glue_par(LEFT_SKIP_CODE)
  73. #define    right_skip                    glue_par(RIGHT_SKIP_CODE)
  74. #define    top_skip                    glue_par(TOP_SKIP_CODE)
  75. #define    split_top_skip                glue_par(SPLIT_TOP_SKIP_CODE)
  76. #define    tab_skip                    glue_par(TAB_SKIP_CODE)
  77. #define    space_skip                    glue_par(SPACE_SKIP_CODE)
  78. #define    xspace_skip                    glue_par(XSPACE_SKIP_CODE)
  79. #define    par_fill_skip                glue_par(PAR_FILL_SKIP_CODE)
  80. #define    thin_mu_skip                glue_par(THIN_MU_SKIP_CODE)
  81. #define    med_mu_skip                    glue_par(MED_MU_SKIP_CODE)
  82. #define    thick_mu_skip                glue_par(THICK_MU_USKIP_CODE)
  83.  
  84. #define    SKIP_BASE                (GLUE_BASE + GLUE_PARS)
  85. #define    skip(S)                    equiv(SKIP_BASE + S)
  86.  
  87. #define    MU_SKIP_BASE            (SKIP_BASE + 256)
  88. #define    mu_skip(M)                equiv(MU_SKIP_BASE + M)
  89.  
  90. #define    LOCAL_BASE                (MU_SKIP_BASE + 256)
  91.  
  92. #define    PAR_SHAPE_LOC            LOCAL_BASE
  93. #define    OUTPUT_ROUTINE_LOC        (LOCAL_BASE + 1)
  94. #define    EVERY_PAR_LOC            (LOCAL_BASE + 2)
  95. #define    EVERY_MATH_LOC            (LOCAL_BASE + 3)
  96. #define    EVERY_DISPLAY_LOC        (LOCAL_BASE + 4)
  97. #define    EVERY_HBOX_LOC            (LOCAL_BASE + 5)
  98. #define    EVERY_VBOX_LOC            (LOCAL_BASE + 6)
  99. #define    EVERY_JOB_LOC            (LOCAL_BASE + 7)
  100. #define    EVERY_CR_LOC            (LOCAL_BASE + 8)
  101. #define    ERR_HELP_LOC            (LOCAL_BASE + 9)
  102.  
  103. #define    TOKS_BASE                (LOCAL_BASE + 10)
  104. #define    BOX_BASE                (TOKS_BASE + 256)
  105. #define    CUR_FONT_LOC            (BOX_BASE + 256)
  106. #define    MATH_FONT_BASE            (CUR_FONT_LOC + 1)
  107. #define    CAT_CODE_BASE            (MATH_FONT_BASE + 48)
  108. #define    LC_CODE_BASE            (CAT_CODE_BASE + 128)
  109. #define    UC_CODE_BASE            (LC_CODE_BASE + 128)
  110. #define    SF_CODE_BASE            (UC_CODE_BASE + 128)
  111. #define    MATH_CODE_BASE            (SF_CODE_BASE + 128)
  112.  
  113. #define    par_shape_ptr            equiv(PAR_SHAPE_LOC)
  114. #define    output_routine            equiv(OUTPUT_ROUTINE_LOC)
  115. #define    every_par                equiv(EVERY_PAR_LOC)
  116. #define    every_math                equiv(EVERY_MATH_LOC)
  117. #define    every_display            equiv(EVERY_DISPLAY_LOC)
  118. #define    every_hbox                equiv(EVERY_HBOX_LOC)
  119. #define    every_vbox                equiv(EVERY_VBOX_LOC)
  120. #define    every_job                equiv(EVERY_JOB_LOC)
  121. #define    every_cr                equiv(EVERY_CR_LOC)
  122. #define    err_help                equiv(ERR_HELP_LOC)
  123. #define    toks(M)                    equiv(TOKS_BASE + M)
  124. #define    box(M)                    equiv(BOX_BASE + M)
  125. #define    cur_font                equiv(CUR_FONT_LOC)
  126. #define    fam_fnt(M)                equiv(MATH_FONT_BASE + M)
  127. #define    cat_code(M)                equiv(CAT_CODE_BASE + M)
  128. #define    lc_code(M)                equiv(LC_CODE_BASE + M)
  129. #define    uc_code(M)                equiv(UC_CODE_BASE + M)
  130. #define    sf_code(M)                equiv(SF_CODE_BASE + M)
  131. #define    math_code(M)            equiv(MATH_CODE_BASE + M)
  132.  
  133. #define    NULL_FONT                FONT_BASE
  134. #define    VAR_CODE                070000
  135.  
  136. #define    INT_BASE                (MATH_CODE_BASE + 128)
  137. #define    INT_PARS                50
  138. #define    int_par(I)                eqtb[INT_BASE + I].i
  139.  
  140. #define    PRETOLERANCE_CODE            0
  141. #define    TOLERANCE_CODE                1
  142. #define    LINE_PENALTY_CODE            2
  143. #define    HYPHEN_PENALTY_CODE            3        
  144. #define    CLUB_PENALTY_CODE            4
  145. #define    EX_HYPHEN_PENALTY_CODE        5
  146. #define    WIDOW_PENALTY_CODE            6
  147. #define    DISPLAY_WIDOW_PENALTY_CODE    7
  148. #define    BROKEN_PENALTY_CODE            8
  149. #define    BIN_OP_PENALTY_CODE            9
  150. #define    REL_PENALTY_CODE            10
  151. #define    PRE_DISPLAY_PENALTY_CODE    11
  152. #define    POST_DISPLAY_PENALTY_CODE    12
  153. #define    INTER_LINE_PENALTY_CODE        13
  154. #define    DOUBLE_HYPHEN_DEMERITS_CODE    14
  155. #define    FINAL_HYPHEN_DEMERITS_CODE    15
  156. #define    ADJ_DEMERITS_CODE            16
  157. #define    MAG_CODE                    17
  158. #define    DELIMITER_FACTOR_CODE        18
  159. #define    LOOSENESS_CODE                19
  160. #define    TIME_CODE                    20
  161. #define    DAY_CODE                    21
  162. #define    MONTH_CODE                    22
  163. #define    YEAR_CODE                    23
  164. #define    SHOW_BOX_BREADTH_CODE        24
  165. #define    SHOW_BOX_DEPTH_CODE            25
  166. #define    HBADNESS_CODE                26
  167. #define    VBADNESS_CODE                27
  168. #define    PAUSING_CODE                28
  169. #define    TRACING_ONLINE_CODE            29
  170. #define    TRACING_MACROS_CODE            30
  171. #define    TRACING_STATS_CODE            31
  172. #define    TRACING_PARAGRAPHS_CODE        32
  173. #define    TRACING_PAGES_CODE            33
  174. #define    TRACING_OUTPUT_CODE            34
  175. #define    TRACING_LOST_CHARS_CODE        35
  176. #define    TRACING_COMMANDS_CODE        36
  177. #define    TRACING_RESTORES_CODE        37
  178. #define    UC_HYPH_CODE                38
  179. #define    OUTPUT_PENALTY_CODE            39
  180. #define    MAX_DEAD_CYCLES_CODE        40
  181. #define    HANG_AFTER_CODE                41
  182. #define    FLOATING_PENALTY_CODE        42
  183. #define    GLOBAL_DEFS_CODE            43
  184. #define    CUR_FAM_CODE                44
  185. #define    ESCAPE_CHAR_CODE            45
  186. #define    DEFAULT_HYPHEN_CHAR_CODE    46
  187. #define    DEFAULT_SKEW_CHAR_CODE        47
  188. #define    END_LINE_CHAR_CODE            48
  189. #define    NEW_LINE_CHAR_CODE            49
  190.  
  191. #define    pretolerance            int_par(PRETOLERANCE_CODE)
  192. #define    tolerance                int_par(TOLERANCE_CODE)
  193. #define    line_penalty            int_par(LINE_PENALTY_CODE)
  194. #define    hyphen_penalty            int_par(HYPHEN_PENALTY_CODE)
  195. #define    ex_hyphen_penalty        int_par(EX_HYPHEN_PENALTY_CODE)
  196. #define    club_penalty            int_par(CLUB_PENALTY_CODE)
  197. #define    widow_penalty            int_par(WIDOW_PENALTY_CODE)
  198. #define    display_widow_penalty    int_par(DISPLAY_WIDOW_PENALTY_CODE)
  199. #define    broken_penalty            int_par(BROKEN_PENALTY_CODE)
  200. #define    bin_op_penalty            int_par(BIN_OP_PENALTY_CODE)
  201. #define    rel_penalty                int_par(REL_PENALTY_CODE)
  202. #define    pre_display_penalty        int_par(PRE_DISPLAY_PENALTY_CODE)
  203. #define    post_display_penalty    int_par(POST_DISPLAY_PENALTY_CODE)
  204. #define    inter_line_penalty        int_par(INTER_LINE_PENALTY_CODE)
  205. #define    double_hyphen_demerits    int_par(DOUBLE_HYPHEN_DEMERITS_CODE)
  206. #define    final_hyphen_demerits    int_par(FINAL_HYPHEN_DEMERITS_CODE)
  207. #define    adj_demerits            int_par(ADJ_DEMERITS_CODE)
  208. #define    mag                        int_par(MAG_CODE)
  209. #define    delimiter_factor        int_par(DELIMITER_FACTOR_CODE)
  210. #define    looseness                int_par(LOOSENESS_CODE)
  211. #define    time                    int_par(TIME_CODE)
  212. #define    day                        int_par(DAY_CODE)
  213. #define    month                    int_par(MONTH_CODE)
  214. #define    year                    int_par(YEAR_CODE)
  215. #define    show_box_breadth        int_par(SHOW_BOX_BREADTH_CODE)
  216. #define    show_box_depth            int_par(SHOW_BOX_DEPTH_CODE)
  217. #define    hbadness                int_par(HBADNESS_CODE)
  218. #define    vbadness                int_par(VBADNESS_CODE)
  219. #define    pausing                    int_par(PAUSING_CODE)
  220. #define    tracing_online            int_par(TRACING_ONLINE_CODE)
  221. #define    tracing_macros            int_par(TRACING_MACROS_CODE)
  222. #define    tracing_stats            int_par(TRACING_STATS_CODE)
  223. #define    tracing_paragraphs        int_par(TRACING_PARAGRAPHS_CODE)
  224. #define    tracing_pages            int_par(TRACING_PAGES_CODE)
  225. #define    tracing_output            int_par(TRACING_OUTPUT_CODE)
  226. #define    tracing_lost_chars        int_par(TRACING_LOST_CHARS_CODE)
  227. #define    tracing_commands        int_par(TRACING_COMMANDS_CODE)
  228. #define    tracing_restores        int_par(TRACING_RESTORES_CODE)
  229. #define    uc_hyph                    int_par(UC_HYPH_CODE)
  230. #define    max_dead_cycles            int_par(MAX_DEAD_CYCLES_CODE)
  231. #define    output_penalty            int_par(OUTPUT_PENALTY_CODE)
  232. #define    hang_after                int_par(HANG_AFTER_CODE)
  233. #define    floating_penalty        int_par(FLOATING_PENALTY_CODE)
  234. #define    global_defs                int_par(GLOBAL_DEFS_CODE)
  235. #define    cur_fam                    int_par(CUR_FAM_CODE)
  236. #define    escape_char                int_par(ESCAPE_CHAR_CODE)
  237. #define    default_hyphen_char        int_par(DEFAULT_HYPHEN_CHAR_CODE)
  238. #define    default_skew_char        int_par(DEFAULT_SKEW_CHAR_CODE)
  239. #define    end_line_char            int_par(END_LINE_CHAR_CODE)
  240. #define    new_line_char            int_par(NEW_LINE_CHAR_CODE)
  241.  
  242. #define    COUNT_BASE                (INT_BASE + INT_PARS)
  243. #define    count(C)                eqtb[COUNT_BASE + C].i
  244.  
  245. #define    DEL_CODE_BASE            (COUNT_BASE + 256)
  246. #define    del_code(D)                eqtb[DEL_CODE_BASE + D].i
  247.  
  248. #define    DIMEN_BASE                (DEL_CODE_BASE + 128)
  249. #define    DIMEN_PARS                20
  250. #define    dimen_par(D)            eqtb[DIMEN_BASE + D].sc
  251.  
  252. #define    PAR_INDENT_CODE                0
  253. #define    MATH_SURROUND_CODE            1
  254. #define    LINE_SKIP_LIMIT_CODE        2
  255. #define    HSIZE_CODE                    3
  256. #define    VSIZE_CODE                    4
  257. #define    MAX_DEPTH_CODE                5
  258. #define    SPLIT_MAX_DEPTH_CODE        6
  259. #define    BOX_MAX_DEPTH_CODE            7
  260. #define    HFUZZ_CODE                    8
  261. #define    VFUZZ_CODE                    9
  262. #define    DELIMITER_SHORTFALL_CODE    10
  263. #define    NULL_DELIMITER_SPACE_CODE    11
  264. #define    SCRIPT_SPACE_CODE            12
  265. #define    PRE_DISPLAY_SIZE_CODE        13
  266. #define    DISPLAY_WIDTH_CODE            14
  267. #define    DISPLAY_INDENT_CODE            15
  268. #define    OVERFULL_RULE_CODE            16
  269. #define    HANG_INDENT_CODE            17
  270. #define    H_OFFSET_CODE                18
  271. #define    V_OFFSET_CODE                19
  272.  
  273. #define    par_indent                dimen_par(PAR_INDENT_CODE)
  274. #define    math_surround            dimen_par(MATH_SURROUND_CODE)
  275. #define    line_skip_limit            dimen_par(LINE_SKIP_LIMIT_CODE)
  276. #define    hsize                    dimen_par(HSIZE_CODE)
  277. #define    vsize                    dimen_par(VSIZE_CODE)
  278. #define    max_depth                dimen_par(MAX_DEPTH_CODE)
  279. #define    split_max_depth            dimen_par(SPLIT_MAX_DEPTH_CODE)
  280. #define    box_max_depth            dimen_par(BOX_MAX_DEPTH_CODE)
  281. #define    hfuzz                    dimen_par(HFUZZ_CODE)
  282. #define    vfuzz                    dimen_par(VFUZZ_CODE)
  283. #define    delimiter_shortfall        dimen_par(DELIMITER_SHORTFALL_CODE)
  284. #define    null_delimiter_space    dimen_par(NULL_DELIMITER_SPACE_CODE)
  285. #define    script_space            dimen_par(SCRIPT_SPACE_CODE)
  286. #define    pre_display_size        dimen_par(PRE_DISPLAY_SIZE_CODE)
  287. #define    display_width            dimen_par(DISPLAY_WIDTH_CODE)
  288. #define    display_indent            dimen_par(DISPLAY_INDENT_CODE)
  289. #define    overfull_rule            dimen_par(OVERFULL_RULE_CODE)
  290. #define    hang_indent                dimen_par(HANG_INDENT_CODE)
  291. #define    h_offset                dimen_par(H_OFFSET_CODE)
  292. #define    v_offset                dimen_par(V_OFFSET_CODE)
  293.  
  294. #define    SCALED_BASE                (DIMEN_BASE + DIMEN_PARS)
  295. #define    dimen(D)                eqtb[SCALED_BASE + D].sc
  296.  
  297. #define    EQTB_SIZE                (SCALED_BASE + 255)
  298.  
  299. global    mword        eqtb[];
  300. global    qword        xeq_level[];
  301.  
  302. int        print_param();
  303. int        print_length_param();
  304. int        print_skip_param();
  305. int        show_eqtb();
  306. int        init_eq();
  307.